import { IPSControlItem } from '../ipscontrol-item';
import { IPSLayout } from '../layout/ipslayout';
import { IPSLayoutItem } from '../layout/ipslayout-item';
import { IPSLayoutPos } from '../layout/ipslayout-pos';
import { IPSPanelItemCatGroupLogic } from './ipspanel-item-cat-group-logic';
import { IPSLanguageRes } from '../../res/ipslanguage-res';
import { IPSSysCss } from '../../res/ipssys-css';
import { IPSSysImage } from '../../res/ipssys-image';
import { IPSSysPFPlugin } from '../../res/ipssys-pfplugin';

/**
 *
 * 子接口类型识别属性[itemType]
 * @export
 * @interface IPSPanelItem
 */
export interface IPSPanelItem extends IPSControlItem, IPSLayoutItem {
  /**
   * 标题语言资源
   *
   * @type {IPSLanguageRes}
   */
  getCapPSLanguageRes(): IPSLanguageRes | null;

  /**
   * 标题
   * @type {string}
   */
  caption: string;

  /**
   * 内容高度
   * @type {number}
   * @default 0.0
   */
  contentHeight: number;

  /**
   * 内容宽度
   * @type {number}
   * @default 0.0
   */
  contentWidth: number;

  /**
   * 项直接样式
   * @type {string}
   */
  cssStyle: string;

  /**
   * 动态样式表
   * @type {string}
   */
  dynaClass: string;

  /**
   * 高度
   * @type {number}
   * @default 0.0
   */
  height: number;

  /**
   * 成员样式
   * @description 值模式 [部件成员样式] {DEFAULT：默认样式、 STYLE2：样式2、 STYLE3：样式3、 STYLE4：样式4 }
   * @type {( string | 'DEFAULT' | 'STYLE2' | 'STYLE3' | 'STYLE4')}
   */
  itemStyle: string | 'DEFAULT' | 'STYLE2' | 'STYLE3' | 'STYLE4';

  /**
   * 成员类型
   * @type {string}
   */
  itemType: string;

  /**
   * 标签直接样式
   * @type {string}
   */
  labelCssStyle: string;

  /**
   * 标签动态样式表
   * @type {string}
   */
  labelDynaClass: string;

  /**
   * 标签样式表对象
   *
   * @type {IPSSysCss}
   */
  getLabelPSSysCss(): IPSSysCss | null;

  /**
   * 布局设置
   *
   * @type {IPSLayout}
   */
  getPSLayout(): IPSLayout | null;

  /**
   * 位置
   *
   * @type {IPSLayoutPos}
   */
  getPSLayoutPos(): IPSLayoutPos | null;

  /**
   * 面板成员动态逻辑
   *
   * @type {IPSPanelItemCatGroupLogic[]}
   */
  getPSPanelItemGroupLogics(): IPSPanelItemCatGroupLogic[] | null;

  findPSPanelItemCatGroupLogic(objKey: any): IPSPanelItemCatGroupLogic | null;

  /**
   * 界面样式表
   *
   * @type {IPSSysCss}
   */
  getPSSysCss(): IPSSysCss | null;

  /**
   * 图片对象
   *
   * @type {IPSSysImage}
   */
  getPSSysImage(): IPSSysImage | null;

  /**
   * 前端扩展插件
   *
   * @type {IPSSysPFPlugin}
   */
  getPSSysPFPlugin(): IPSSysPFPlugin | null;

  /**
   * 宽度
   * @type {number}
   * @default 0.0
   */
  width: number;

  /**
   * 显示标题
   * @type {boolean}
   * @default false
   */
  showCaption: boolean;
}
